home *** CD-ROM | disk | FTP | other *** search
- /************************************************
- * TOWNS-OSV2.1画面圧縮保存サイドワーク SDKSAVER.EXP *
- * [SDKSAVER.C] (C) 頭脳圧搾工場仙台 *
- * Version 0.1 1994/04/03 *
- * Version 1.0 1994/08/18 *
- *************************************************
-
- ■ 機能 ■
-
- 全標準画面モード対応画面保存サイドワーク
-
- ■ [使用法・登録例] ■
-
- システム設定のサイドワークアプリ設定でSDKSAVER.EXPを設定する。
-
- オプションは [-v] [path] ([...]は省略可能)
-
- -v...仮想画面をまるごと保存するオプション
-
- path...ファイルパスとファイル名先頭
-
- [例] a:\graphics\image
- 作成ファイル
- Aドライブのgraphicsディレクトリに
- image0.tif
- image1.tif
- image2.tif
- ...
- image999.tif
-
- あるいは\SIDEWORK\SIDEWORK.SYSに次の一行を追加
-
- S "スクリーンセーバー?" @:\SIDEWORK\SDKSAVER.EXP [-v] [path]
-
-
- ■ 構成する関数 ■
-
- init : サイドワーク, T-BIOSの初期設定
- term : サイドワーク, T-BIOSの終了処理
- make_filename : 保存用ファイル名の取得
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <egb.h>
- #include <string.h>
- #include <sidework.h>
- extern int saveTiff(char *gwork, char *palt, int page, char *fileName, int vsflg);
-
- /*******************
- * T-BIOS作業領域 *
- *******************/
- static char *gwk ; /* グラフィックス作業領域 */
- #define PaletteWorkSize (4+8*256) /* パレット情報退避領域サイズ */
- static char *pwk ; /* パレット情報退避領域 */
- static int orgWritePage ; /* 元の書き込みページ */
- static int sidework ;
- static int spage ;
-
- /*********************************
- * init ---- 表示系の初期化処理 *
- *********************************/
-
- void init(void)
- {
- int page[2] ; /* 画面モード */
- spage = 1 ;
- if ((gwk = malloc(EgbWorkSize + PaletteWorkSize)) != NULL) {
- pwk = gwk + EgbWorkSize ;
- EGB_getResolution(&page[0], &page[1]) ;
- EGB_resolution(gwk, 1, page[1] | 0x40) ;/* ページ#1の画面モード */
- EGB_resolution(gwk, 0, page[0] | 0x40) ;/* ページ#0の画面モード */
- /* 現在の書き込みページを退避 */
- orgWritePage = EGB_getWritePage(0, 0) ;
- if (page[0] < 12 || page[0] > 22) spage =2 ;
- }
- }
-
- /*******************************
- * term ---- 表示系の終了処理 *
- *******************************/
- int term(void)
- {
- /* 元の書き込みページを復元 */
- EGB_writePage(gwk, orgWritePage) ;
-
- /* サイドワークプロセス終了処理 */
- if (sidework != 0) sdk_terminate(gwk, NULL, NULL) ;
-
- return 0 ;
- }
-
- /********************************************
- * make_fileName ---- 保存ファイル名の作成 *
- ********************************************/
- int fileExists(char *fileName){
- FILE *fp ;
- fp = fopen(fileName, "rb") ;
- if (fp == NULL) return 0 ;
- fclose(fp) ;
- return 1 ;
- }
- int make_fileName(char *fileName,char *para){
- int size,i,max ;
- char *p ;
- char num[9] ;
- p = para ;
- size = 0 ;
- while (*p != '\0') p++ ;
- p-- ;
- while (*p != '\\' & *p != ':'){
- p-- ;
- size++ ;
- }
- size = 8 - size ;
- for(max=1;size>0;size--) max *= 10 ;
- if (max > 0){
- for(i=0;i<max;i++){
- strcpy(fileName, para) ;
- strcat(fileName, _itoa(i, num, 10)) ;
- strcat(fileName, ".tif") ;
- if (fileExists(fileName) == 0) break ;
- }
- }else{
- strcpy(fileName, para) ;
- strcat(fileName, ".tif") ;
- }
- return 0 ;
- }
- /**************************
- * main ---- mainprogram *
- **************************/
- void main(int argc, char *argv[])
- {
- char *filePath,*initpara ;
- int argx ;
- int vsflg = 0 ;
-
- sidework = sdk_isAtWork() ;
- if (sidework != 0 && sdk_start(32) != 0) return ;
-
- filePath = malloc(256) ;
- initpara = filePath + 128 ;
-
- argx = argc ;
- if (argx > 1 && argv[1][0] == '-' && (argv[1][1] == 'v' || argv[1][1] == 'V')) {
- argx -= 1 ;
- vsflg = 1 ;
- }
- if (argx != 2)
- strcpy(initpara, "a:\\image") ; /* デフォルト */
- else
- strcpy(initpara, argv[argc-1]) ;
-
- init() ; /* グラフィックスの初期化 */
-
- make_fileName(filePath, initpara) ;
- saveTiff(gwk, pwk, 0, filePath, vsflg) ;
- make_fileName(filePath, initpara) ;
- if (spage==2) saveTiff(gwk, pwk, 1, filePath, vsflg) ;
-
- free(filePath) ;
-
- term() ; /* グラフィックスとサイドワークの終了処理 */
-
- }
-